package com.haoma.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.haoma.dto.LinkAuditDto;
import com.haoma.entity.Link;
import com.haoma.entity.LinkApplyFor;
import com.haoma.exception.BlogException;
import com.haoma.mapper.LinkApplyForMapper;
import com.haoma.mapper.LinkMapper;
import com.haoma.service.LinkApplyForService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * Description: 友链申请相关接口
 */
@Service
public class LinkApplyForServiceImpl extends ServiceImpl<LinkApplyForMapper, LinkApplyFor> implements LinkApplyForService {

    @Autowired
    private LinkApplyForMapper linkApplyForMapper;

    @Autowired
    private LinkMapper linkMapper;

    /**
     * 审核成功
     *
     * @param linkAuditDto
     */
    public void auditSuccess(LinkAuditDto linkAuditDto) {
        System.out.println(linkAuditDto);
        audit(linkAuditDto, 1);
    }

    /**
     * 审核失败
     *
     * @param linkAuditDto
     */
    public void auditFail(LinkAuditDto linkAuditDto) {
        audit(linkAuditDto, 0);
    }


    /**
     * 审核
     *
     * @param linkAuditDto
     */
    public void audit(LinkAuditDto linkAuditDto, Integer status) {
        // 查询link表获取到linkId
        LambdaQueryWrapper<Link> linkLambdaQueryWrapper = new LambdaQueryWrapper<>();
        linkLambdaQueryWrapper.eq(Link::getLinkAddress, linkAuditDto.getLinkAddress());
        Link link = linkMapper.selectOne(linkLambdaQueryWrapper);
        if (link == null) {
            throw new BlogException("审核失败");
        }
        // 查询友链申请表
        LambdaQueryWrapper<LinkApplyFor> linkApplyForLambdaQueryWrapper = new LambdaQueryWrapper<>();
        linkApplyForLambdaQueryWrapper.eq(LinkApplyFor::getLinkId, link.getId());
        // 查询
        LinkApplyFor linkApplyFor = linkApplyForMapper.selectOne(linkApplyForLambdaQueryWrapper);
        if (linkApplyFor == null) {
            throw new BlogException("审核失败");
        }
        // 成功就删除掉
        if (status == 1) {
            linkApplyFor.setStatus(2);
        }else{
            linkApplyFor.setStatus(1);
        }
        if (linkAuditDto.getMessage() != null) {
            linkApplyFor.setMessage(linkAuditDto.getMessage());
        }
        linkApplyForMapper.update(linkApplyFor, linkApplyForLambdaQueryWrapper);
    }
}
